#ifndef PROTOCOLPARSER_H
#define PROTOCOLPARSER_H

#include <QObject>
#include <QMap>
#include <QDateTime>

class ProtocolParser : public QObject
{
    Q_OBJECT

public:
    explicit ProtocolParser(QObject *parent = nullptr);

    // 构建完整数据包（新增）
    QByteArray buildPacket(const QString &qn, int cn, int flag, const QMap<QString, QString> &params);

    // 解析接收到的数据包
    bool parsePacket(const QByteArray &packet, QByteArray &dataSegment);
    bool parseDataSegment(const QByteArray &data, QString &qn, int &cn, int &flag, QMap<QString, QString> &params);

    // 工具函数
    static QString getCurrentTimestamp();
    static QMap<QString, QString> parseCP(const QString &cp);
    static QString buildCP(const QMap<QString, QString> &params);

    // CRC16计算
    static quint16 calculateCRC16(const QByteArray &data);

private:
    // 构建数据段
    QByteArray buildDataSegment(const QString &qn, int cn, int flag, const QMap<QString, QString> &params);
};

#endif // PROTOCOLPARSER_H
